其他
交互式探索进化树
https://twitter.com/drandersgs/status/965996335882059776
推特上@drandersgs的推文,演示了ggtree+plotly进行交互树探索进化树。我们先看图:
代码很简单:
# LOAD LIBS ---------------------------------------------------------------
library(ape)
library(ggtree)
library(plotly)
# CREATE A TREE -------------------------------------------------------------
n_samples <- 20
n_grp <- 4
tree <- ape::rtree(n = n_samples)
# CREATE SOME METADATA ----------------------------------------------------
id <- tree$tip.label
set.seed(42)
grp <- sample(LETTERS[1:n_grp], size = n_samples, replace = T)
dat <- tibble::tibble(id = id,
grp = grp)
# PLOT THE TREE -----------------------------------------------------------
p1 <- ggtree(tree)
metat <- p1$data %>%
dplyr::inner_join(dat, c('label' = 'id'))
p2 <- p1 +
geom_point(data = metat,
aes(x = x,
y = y,
colour = grp,
label = id))
plotly::ggplotly(p2)
但如果你对ggtree熟悉的话,我想你应该知道这个图的产生可以用更加ggtree、更加简单的方式:
p1 <- ggtree(tree)
这一句后面的代码,其实干的就是下面一个语句而已。
p2 <- p1 %<+% dat + geom_tippoint(aes(color=grp))
但上面这个p2
用ggplotly
的时候,就会报名,因为我在ggtree里写的这个geom_tippoint
是没有写一个函数去翻译成plotly的,这个有待以后去写,要想让plotly真正支持ggtree,还要很多事情要做的。但起码简单一些的事情,比如像上面这个,去zoom in, zoom out, 鼠标停留在节点上,看一些相关的注释,还是可以做到的。
交互式可视化,我在ggtree中也写过一点功能,请移步《交互式操作进化树》。
另外关于ggtree和其它包合体,以相互扩展功能的,例子还有很多,比如:
分别是和ggbio, ggbridges,emojifont,comicR和ggimage包的合体。